﻿#pragma once
#ifndef GlobalConfig_hpp
#define GlobalConfig_hpp


#include<stdint.h>
#include<mutex>
#include<vector>
#include<atomic>
#include"../Framework/AppDefine.hpp"


namespace MMF
{

    struct MMFUnitCfg
    {
        uint64_t mBufferCount;              ///< 某些组件的缓冲块数

    };


    class MMFUnitConfig
    {

        //单例相关数据
        static std::once_flag sFlag;
        static MMFUnitConfig* sInstance;

        MMFUnitCfg mGlobalCfg;
        std::vector<MMFUnitCpt> mUnitCpt;   ///< unit组件

        std::atomic<bool> mIsLoad = false;
    
    public:

        //获取实例
        static MMFUnitConfig& Instance();

        bool Start();

        uint64_t GetBufferCount();

        const std::vector<MMFUnitCpt>& UnitApp();

    private:

        bool ParseCfg();
    };
}


#endif